package vue.util;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

/**
 * Utilitaires d'images
 * 
 * @author Martin
 *
 */
public class ImageUtil {

	/**
	 * Fournie une copie de l'image originale qui respecte les dimensions
	 * demandées.
	 * 
	 * @param originalImage
	 *            l'image à colorer
	 * @param width
	 *            la largeur de l'image
	 * @param height
	 *            la hauteur de l'image
	 * @return une copie redimensionnée de l'image originale.
	 */
	public static BufferedImage resizeImage(BufferedImage originalImage,
			int width, int height) {
		int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB
				: originalImage.getType();

		BufferedImage resizedImage = new BufferedImage(width, height, type);
		Graphics2D g = resizedImage.createGraphics();
		g.drawImage(originalImage, 0, 0, width, height, null);
		g.dispose();

		return resizedImage;
	}

	/**
	 * Change la couleur principale de l'image. Attention, l'image originale est
	 * modifiée.
	 * 
	 * @param originalImage
	 *            l'image à colorer
	 * @param width
	 *            la largeur de l'image
	 * @param height
	 *            la hauteur de l'image
	 * @param color
	 *            la couleur à donner à l'image
	 */
	public static void changeColor(BufferedImage originalImage, int width,
			int height, int color) {

		for (int x = 0; x < originalImage.getWidth(); x++) {
			for (int y = 0; y < originalImage.getHeight(); y++) {
				int pixel = originalImage.getRGB(x, y);

				pixel = pixel | color;

				originalImage.setRGB(x, y, pixel);
			}
		}
	}
	
	/**
	 * Avec un numéro de couleur de 1 à 10,nous déterminons une couleur
	 * préconçue. Si une valeur de mois de 10 est mis, nous mettons aucune
	 * couleur. Une valeur de plus de 10 va émettre une couleur au hasard parmi
	 * le pool disponible.
	 * 
	 * @param numeroCouleur
	 *            . un entier entre 1 et 10
	 * 
	 * @return un int, une couleur en valeur entière RGB
	 */
	public static int findColor(int numeroCouleur) {
	int RGB = 0;

	/* Une couleur au hasard est choisi */
	if (numeroCouleur > 10)
	/*
	 * Nous multiplions par 11, car Math.random() prend un chiffre entre
	 * 0 inclusivement et 10 exclusivement
	 */
	numeroCouleur = (int) (Math.random() * 11);
	switch (numeroCouleur) {
	case 1:
	RGB = new Color(155, 155, 155).getRGB();
	break;
	case 2:
	RGB = new Color(238, 99, 99).getRGB();
	break;
	case 3:
	RGB = new Color(113, 198, 113).getRGB();
	break;
	case 4:
	RGB = new Color(255, 153, 18).getRGB();
	break;
	case 5:
	RGB = new Color(205, 205, 0).getRGB();
	break;
	case 6:
	RGB = new Color(154, 205, 50).getRGB();
	break;
	case 7:
	RGB = new Color(0, 205, 205).getRGB();
	break;
	case 8:
	RGB = new Color(30, 144, 255).getRGB();
	break;
	case 9:
	RGB = new Color(155, 48, 255).getRGB();
	break;
	case 10:
	RGB = new Color(176, 23, 31).getRGB();
	break;
	default:
	RGB = new Color(0, 0, 0).getRGB();
	break;
	}

	return RGB;
	}

}
